package com.idroc.cdfs.util;


/**
 * 字节处理工具类
 * @author zhandl(yuyoo4j@163.com)
 * @companay www.idroc.com
 * @2009-8-9 上午12:03:30
 */
public final class ByteUtil {
	
	/**
	 * 防止非法创建对象
	 *
	 */
	private ByteUtil() {}
	
	/**
	 * 获取字节数组中的一个整数
	 * @param data -- 字节数组
	 * @param offset -- 开始位置的偏移
	 * @return -- 在偏移位置往后4个字节的int值
	 * @memo 偏移后有4个字节就是这4个字节的值,如果没有4个字节, 
	 * 		 那么就是少于4个字节的值, 使用高位优先处理(大字节流处理方式)
	 */
	public static int getInt(byte[] data, int offset) {

		int[] byteVal = new int[4];
		for (int i = offset; i < 4 && i < data.length; i++) { 
			byteVal[i] = (int) data[i];
		}
		return ((byteVal[0] << 24) + (byteVal[1] << 16) + (byteVal[2] << 8) + (byteVal[3] << 0));
	}

	/**
	 * 获取字节数组中的一个短整数
	 * @param data  -- 字节数组
	 * @param offset -- 开始位置的偏移
	 * @return -- 在偏移位置往后2个字节的short值
	 * @memo 字节数组在偏移位置往后至少存在2个字节,否则抛出运行时异常
	 */
	public static short getShort(byte[] data, int offset) {
		
		short byte0 = data[offset];
		short byte1 = data[offset + 1];
		return (short) ((byte0 << 8) + byte1);
	}
}
